home *** CD-ROM | disk | FTP | other *** search
/ Interplay's Learn to Program Basic (Review Copy) / Learn to Program Basic Review Copy (Interplay)(June 23, 1998).ISO / pc / ltpbasic / projects / hangman.bas < prev    next >
BASIC Source File  |  1998-04-01  |  4KB  |  223 lines

  1. rem Hangman
  2. rem by Scott Mathews
  3. rem August 18, 1997
  4. cls
  5.  
  6. let wordcount = 25
  7. let maxwordsize = 10
  8. let bodypart = 0
  9. let gallowscolor = 45
  10. let bodycolor = 60
  11.  
  12. let letterfound = false
  13. let alive = true
  14. let rightrow = 12
  15. let wrongcol = 33
  16. let wrongrow = 3
  17.  
  18. rem set up and fill the word array
  19. dim hangman$ (wordcount)
  20. for count = 1 to wordcount
  21. read hangman$ (count)
  22. next count
  23.  
  24. rem grab a random word from the array
  25. let pos = random (1, wordcount)
  26. let word$ = hangman$ (pos)
  27.  
  28. rem draw the correct number of spaces for the word
  29. let length = Len(word$)
  30. let column = 1 
  31. for Scount = 1 to length
  32. position column*2, rightrow
  33. print "_"
  34. let column = column +1
  35. next Scount
  36.  
  37. rem draw the gallows
  38. for I = 10 to 50 step 10
  39. color gallowscolor
  40. fillrect 10+I,190-I to 20+I, 200-I
  41. next I
  42. line 70,140 to 180,140
  43. line 85,60 to 85,140
  44. line 85,60 to 125,60
  45. line 125,60 to 125,70
  46.  
  47. rem take each letter in the word
  48. rem and put it into an array location
  49. dim letter$ (maxwordsize)
  50. for Lcount = 1 to maxwordsize 
  51. let letter$(Lcount) = Mid$(word$,Lcount,1)
  52. next Lcount
  53.  
  54. rem main loop
  55. while alive = true
  56. let letterfound = false
  57.  
  58. rem Ask the player for a guess
  59. guesscheck:
  60. position 5,1
  61. print "                             "
  62. position 5,1
  63. input "What is your guess? ", guess$
  64. if len(guess$) <> 1 then 
  65. position 5,1
  66. print "                           "
  67. position 5,1
  68. print "Guess one letter at a time!"
  69. Sound("CARHORN")
  70. sleep 20
  71. position 5,1
  72. print "                           "
  73. goto guesscheck
  74. endif
  75.  
  76. rem is the player's guess correct?
  77. rem if it is, print it on one of the spaces
  78. for correct = 1 to maxwordsize
  79. if guess$ = letter$(correct)then
  80. let letterfound = true
  81. position correct*2, rightrow
  82. rem add a sound effect here
  83. Sound "BOUNCE"
  84. sleep 5
  85. print guess$
  86. let length = length - 1
  87. if length = 0 then
  88. gosub victory
  89. endif
  90. endif
  91. next correct
  92.  
  93. rem is the player's guess incorrect?
  94. rem if it is, print it in the 'wrong' column
  95. if letterfound = false then
  96. position wrongcol, wrongrow
  97. rem put a buzz sound here
  98. Sound "GAMESHOW"
  99. print guess$
  100. let wrongcol = wrongcol+1
  101. if wrongcol >= 36 then
  102. let wrongcol = 33
  103. let wrongrow = wrongrow+1  
  104. endif
  105. let bodypart = bodypart+1
  106. gosub drawman
  107. endif
  108. wend
  109. end
  110.  
  111. drawman:
  112. color bodycolor
  113.  
  114. rem draw the head
  115. if bodypart = 1 then
  116. circle 125,80, 10
  117. endif
  118.  
  119. rem draw the neck
  120. if bodypart = 2 then
  121. line 125,90 to 125,100
  122. endif
  123.  
  124. rem draw the arms
  125. if bodypart = 3 then 
  126. line 115,100 to 135,100
  127. endif
  128.  
  129. rem draw the torso
  130. if bodypart = 4 then
  131. line 125,100 to 125,115
  132. endif
  133.  
  134. rem draw the legs
  135. if bodypart = 5 then
  136. line 125,115 to 110,130
  137. line 125,115 to 140,130
  138. endif
  139.  
  140. rem draw the appendages
  141. if bodypart = 6 then
  142. circle 112,100,3
  143. circle 138, 100,3
  144. circle 107,130,3
  145. circle 141,130,3
  146. endif
  147.  
  148. rem draw the face
  149. if bodypart = 7 then
  150. line 120,75 to 123,78
  151. line 123,75 to 120,78
  152. line 130,75 to 127,78
  153. line 127,75 to 130,78
  154. circle 125,84,3
  155. gosub gameover
  156. endif
  157. return
  158.  
  159. rem this is the subroutine if the player loses
  160. gameover:
  161. let alive = false
  162. rem play a death sound here
  163. Sleep 10
  164. Sound "Squeak"
  165. Sleep 5
  166. Sound "Arrow"
  167. Sleep 10
  168. Sound "Scream"
  169. sleep 20
  170. cls
  171. position 10,0
  172. print "You have lost!"
  173. print
  174. print "Would you like to see the"
  175. input "word you were trying to guess?", answer$
  176. if left$(answer$,1) = "y" then
  177. position 14,10
  178. print "The word was:"
  179. let leng = len(word$)
  180. let x = int((40-leng)/2)
  181. position x,12
  182. print word$
  183. else
  184. position 10,10
  185. print "Okay. Thanks for playing."
  186. endif
  187. return
  188.  
  189. rem this is the subroutine if the player wins
  190. victory:
  191. let alive = false
  192. Sleep 5
  193. cls
  194. position 12,0
  195. print "You have won!"
  196. position 14,10
  197. print "The word was:"
  198. let leng = len(word$)
  199. let x = int((40-leng)/2)
  200. position x,12
  201. print word$
  202. rem play a victory sound here
  203. Sound "Crowd"
  204. sleep 20
  205. return
  206.  
  207.  
  208. rem lots of carriage returns here to hide
  209. rem the guess words
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217. rem here's the words for the game
  218. data condition, sprite, happy, frenzy, safety
  219. data major, laboratory, notebook, zephyr, allocate
  220. data doorknob, basketball, zeal, wreath, apply
  221. data irritate, conceal, zealot, patience, morale
  222. data value, sudden, foible, huge, gargantuan